------------------------------------------------------- MX COBOL (mxc.lst) MX COBOL Version 3.0 - EN, Copyright (c) Vlastimil Cevela 1996, 2006 (20060528) D:\CeW\cobol\p\mx_d3.cb WHEN-COMPILED = 04/06/06 06:30:25 Registered user: 060529 Name, City, Country 0001 * Work with indexed file mx_d3.cb 0002 * 0003 file-control. 0004 select IDX assign "mx_d2.dat" 0005 organization indexed access dynamic 0006 record key KEY-IDX file status FST-IDX. 0007 file section. 0008 fd IDX. 0009 1 REC-IDX. 0010 2 KEY-IDX pic x(5). 0011 2 DAT-IDX pic x(25). 0012 * 0013 working-storage section. 0014 1 FST-IDX. 0015 2 FST-2 pic xx. 0016 2 FST-O pic x(8). 0017 1 TXT pic x(20) value "read-next". 0018 1 FCT pic x value "n". 0019 88 FIND-REC value "f". 0020 88 START-READ value "s". 0021 88 READ-NEXT value "n". 0022 88 READ-BACK value "b". 0023 88 WRITE-REC value "w". 0024 88 UPDATE-REC value "u". 0025 88 DELETE-REC value "d". 0026 88 END-WORK value "e". 0027 1 KW pic x. 0028 1 KOD. 0029 2 K1 pic x. 0030 2 K2 pic x. 0031 * 0032 screen section. 0033 1 WINDOW. 0034 2 background-color 7 foreground-color 0 highlight. 0035 2 line 5. 0036 3 col 10 "mode:". 0037 3 col 20 pic x using FCT reverse-video. | 0018 0038 3 col 25 pic x(20) from TXT. | 0017 0039 3 col 50 pic xx from FST-2. | 0015 0040 2 line plus 5. 0041 3 col 10 "key:". 0042 3 col 20 pic z(5) using KEY-IDX reverse-video. | 0010 0043 2 line plus 2. 0044 3 col 10 "dat:". 0045 3 col 20 pic x(25) using DAT-IDX reverse-video. | 0011 0046 2 line 19. 0047 3 col 10 0048 "f-ind, s-tart, n-ext, b-ack, w-rite, u-pdate, d-elete, e-nd" 0049 * 0050 procedure division. 0051 * 0052 open i-o IDX. | 0008 0053 display WINDOW. | 0033 0054 perform WORK until (END-WORK). | 0026 0055 accept FCT at 2001. | 0018 0056 close IDX. | 0008 0057 stop run. 0058 * 0059 WORK. 0060 accept WINDOW. | 0033 0061 if (not END-WORK) | 0026 0062 perform WORK-DET 0063 if FST-2 not = "00" | 0015 0064 perform WORK-ERR 0065 end-if 0066# display WINDOW. | 0033 0067 display FCT at 0101. | 0018 0068 display FST-2 at 0105. | 0015 0069 * 0070 WORK-ERR. 0071 if (READ-NEXT) or (READ-BACK) and FST-2 = "10" | 0021 0022 0015 0072 move "end of file !!!" to TXT else | 0017 0073 if (FIND-REC) and FST-2 = "23" | 0019 0015 0074 move " " to DAT-IDX 0075 move "key not found !!!" to TXT else | 0011 0017 0076 if (WRITE-REC) and FST-2 = "10" | 0023 0015 0077 move "duplicate key !!!" to TXT else | 0017 0078 if (UPDATE-REC) and FST-2 = "10" | 0024 0015 0079# move "00" to FST-2. | 0015 0080 * 0081 WORK-DET. 0082 if (FIND-REC) | 0019 0083 move "find" to TXT 0084 read IDX else | 0017 0008 0085 if (START-READ) | 0020 0086 move "start" to TXT 0087 start IDX key = KEY-IDX | 0017 0008 0088 move "n" to FCT | 0010 0089 read IDX next else | 0018 0008 0090 if (READ-NEXT) | 0021 0091 move "read-next" to TXT 0092 read IDX next else | 0017 0008 0093 if (READ-BACK) | 0022 0094 move "read-back" to TXT 0095 read IDX previous else | 0017 0008 0096 if (WRITE-REC) | 0023 0097 move "write" to TXT 0098 write REC-IDX else | 0017 0009 0099 if (UPDATE-REC) | 0024 0100 move "rewrite" to TXT 0101 rewrite REC-IDX else | 0017 0009 0102 if (DELETE-REC) | 0025 0103 move "delete" to TXT 0104 delete IDX | 0017 0105 move "n" to FCT | 0008 0106 else | 0018 0107# move "!!! unknown mode !!!" to TXT. | 0017 0108 DATA DIRECTORY: LV NAME OF ITEM ADDR TP LENG LINE REFERENCE FD IDX 0008 0052 0056 0084 0087 0089 0092 0095 0104 01 REC-IDX 0 GR 30 0009 0098 0101 02 KEY-IDX 0 AN 5 0010 0033 0042 0087 02 DAT-IDX 5 AN 25 0011 0045 0074 01 FST-IDX 0 GR 10 0014 0033 02 FST-2 0 AN 2 0015 0039 0063 0068 0071 0073 0076 0078 0079 02 FST-O 2 AN 8 0016 01 TXT 16 AN 20 0017 0038 0072 0075 0077 0083 0086 0091 0094 0097 0100 0103 0107 01 FCT 40 AN 1 0018 0037 0055 0067 0088 0105 88 FIND-REC 0019 0073 0082 88 START-READ 0020 0085 88 READ-NEXT 0021 0071 0090 88 READ-BACK 0022 0071 0093 88 WRITE-REC 0023 0076 0096 88 UPDATE-REC 0024 0078 0099 88 DELETE-REC 0025 0102 88 END-WORK 0026 0054 0061 01 KW 48 AN 1 0027 01 KOD 56 GR 2 0028 02 K1 56 AN 1 0029 02 K2 57 AN 1 0030 77 TALLY 64 BI 4 0000 77 NSTD-REELS 68 BI 2 0000 77 WHEN-COMPILED 72 AN 16 0000 ERROR LISTING: line 0003: warning 0002 level 0 (some division/section/paragraph header before FILE-CONTROL missing - never mind) line 0007: warning 0002 level 0 (some division/section/paragraph header before FILE missing - never mind) line 0004: error 2308 level 1 (STATUS KEY FST-IDX length is not two bytes exactly) line 0034: error 2602 level 1 (elementary-item FILLER not contains any BLANK SCREEN, BLANK LINE, BELL, LINE, COLUMN, PIC, VALUE - never mind) line 0050: error 0038 level 1 (full stop missing before PROCEDURE - never mind) Errors: 3, warnings: 2 Turbo C Version 2.01 Copyright (c) 1987, 1988 Borland International d:\cew\cobol\p\mx_d3.c: Available memory 339710 Turbo C Version 2.01 Copyright (c) 1987, 1988 Borland International Turbo Link Version 2.0 Copyright (c) 1987, 1988 Borland International Available memory 413700 ------------------------------------------------------- main source C (.c) /* 0001 * Work with indexed file mx_d3.cb */ /* 0002 * */ /* 0003 file-control. */ /* 0004 select IDX assign "mx_d2.dat" */ /* 0005 organization indexed access dynamic */ /* 0006 record key KEY-IDX file status FST-IDX. */ /* 0007 file section. */ /* 0008 fd IDX. */ /* 0009 1 REC-IDX. */ /* 0010 2 KEY-IDX pic x(5). */ /* 0011 2 DAT-IDX pic x(25). */ /* 0012 * */ /* 0013 working-storage section. */ /* 0014 1 FST-IDX. */ /* 0015 2 FST-2 pic xx. */ /* 0016 2 FST-O pic x(8). */ /* 0017 1 TXT pic x(20) value "read-next". */ /* 0018 1 FCT pic x value "n". */ /* 0019 88 FIND-REC value "f". */ /* 0020 88 START-READ value "s". */ /* 0021 88 READ-NEXT value "n". */ /* 0022 88 READ-BACK value "b". */ /* 0023 88 WRITE-REC value "w". */ /* 0024 88 UPDATE-REC value "u". */ /* 0025 88 DELETE-REC value "d". */ /* 0026 88 END-WORK value "e". */ /* 0027 1 KW pic x. */ /* 0028 1 KOD. */ /* 0029 2 K1 pic x. */ /* 0030 2 K2 pic x. */ /* 0031 * */ /* 0032 screen section. */ /* 0033 1 WINDOW. */ /* 0034 2 background-color 7 foreground-color 0 highlight. */ /* 0035 2 line 5. */ /* 0036 3 col 10 "mode:". */ /* 0037 3 col 20 pic x using FCT reverse-video. */ /* 0038 3 col 25 pic x(20) from TXT. */ /* 0039 3 col 50 pic xx from FST-2. */ /* 0040 2 line plus 5. */ /* 0041 3 col 10 "key:". */ /* 0042 3 col 20 pic z(5) using KEY-IDX reverse-video. */ /* 0043 2 line plus 2. */ /* 0044 3 col 10 "dat:". */ /* 0045 3 col 20 pic x(25) using DAT-IDX reverse-video. */ /* 0046 2 line 19. */ /* 0047 3 col 10 */ /* 0048 "f-ind, s-tart, n-ext, b-ack, w-rite, u-pdate, d-elete, e-nd". */ /* 0049 * */ /* 0050 procedure division. */ #include "D:\CeW\cobol\p\mx_d3.d" #undef MXPE #define MXPE(x,y) goto x /* MX COBOL - Jan 08 2000, 16:35:41 */ _l0001: /* @@@ */ /* 0051 * */ /* 0052 open i-o IDX. */ /* OPEN */ F[0].forg=72; F[0].frecf=0; F[0].fst=W; F[0].fn="mx_d2.dat"; F[0].rsz=30; F[0].keyloc=0; F[0].keylen=5; icboxf(&F[0],4); /* . */ /* 0053 display WINDOW. */ /* DISPLAY */ *(P+0) = *(W+40); *(struct J0*)(P+1+0) = *(struct J0*)(W+16+0); *(short*)(P+21+0) = *(short*)(W+0); icbdine(F[0].r01, 5, 0, P+23, "\4\377 ZZZZZ", 5); *(struct J1*)(P+28+0) = *(struct J1*)(F[0].r01+5+0); icbdisp3(P,SAC1,1,1); /* . */ /* 0054 perform WORK until (END-WORK). */ /* PERFORM */ for(;!(((*(W+40) == '\x65')));) { /* 1 */ if(!setjmp(ps[0])) {pk[0]=1; goto _l0002;} else pk[0]=0; } /* 1 */ /* . */ /* 0055 accept FCT at 2001. */ /* ACCEPT */ icbacpsc(W+40,P+53,SAC2,P+53,'.',20,1,0,0); /* . */ /* 0056 close IDX. */ /* CLOSE */ icbcxf(&F[0]); /* . */ /* 0057 stop run. */ /* STOP */ STOPRUN exit(0); /* . */ /* 0058 * */ /* 0059 WORK. */ _l0002: /* WORK */ /* 0060 accept WINDOW. */ /* ACCEPT */ *(P+0) = *(W+40); icbdine(F[0].r01, 5, 0, P+23, "\4\377 ZZZZZ", 5); *(struct J1*)(P+28+0) = *(struct J1*)(F[0].r01+5+0); icbacpsc(P,P+53,SAC1,P+53,'.',1,1,0,0); *(W+40) = *(P+0); *(struct J2*)(F[0].r01+0) = *(struct J2*)(P+23+0); *(struct J1*)(F[0].r01+5+0) = *(struct J1*)(P+28+0); /* . */ /* 0061 if (not END-WORK) */ /* IF */ if ((!(/* 0062 perform WORK-DET */ *(W+40) == '\x65'))) { /* 1 */ /* PERFORM */ /* 0063 if FST-2 not = "00" */ if(!setjmp(ps[1])) {pk[1]=1; goto _l0003;} else pk[1]=0; /* IF */ if (/* 0064 perform WORK-ERR */ *(short*)(W) != *(short*)"\x30\x30") { /* 2 */ /* PERFORM */ /* 0065 end-if */ if(!setjmp(ps[2])) {pk[2]=1; goto _l0004;} else pk[2]=0; /* END-IF */ } /* 2 */ /* 0066 display WINDOW. */ /* DISPLAY */ *(P+0) = *(W+40); *(struct J0*)(P+1+0) = *(struct J0*)(W+16+0); *(short*)(P+21+0) = *(short*)(W+0); icbdine(F[0].r01, 5, 0, P+23, "\4\377 ZZZZZ", 5); *(struct J1*)(P+28+0) = *(struct J1*)(F[0].r01+5+0); icbdisp3(P,SAC1,1,1); /* . */ } /* 1 */ /* 0067 display FCT at 0101. */ /* DISPLAY */ icbdisp3(W+40,SAC2,1,1); /* . */ /* 0068 display FST-2 at 0105. */ /* DISPLAY */ icbdisp3(W,SAC3,1,5); /* . */ /* 0069 * */ /* 0070 WORK-ERR. */ PK( 0); _l0004: /* WORK-ERR */ _f0004 ( argc, argv ); PK( 2); _l0003: /* WORK-DET */ _f0003( argc, argv ); PK( 1); /*KONEC*/ /************ _() end **************/ ;} ------------------------------------------------------- 1st include C (.d) #include #include #include #include "c:\mxc\mxcsdtf.h" #include "c:\mxc\mxcicb.h" static void lojo(jmp_buf); static void lojo(lj1) jmp_buf lj1; {longjmp(lj1,1);} #define XERNF 0x01 extern jmp_buf ps[]; extern short pk[]; static unsigned char flag=0; /* 0x80 = ON SIZE ERROR, 0x40 = READY TRACE */ static short i0,i1; static short exprog=0; extern long xferr; static unsigned char W[16]={0}; static unsigned char W1[24]={'r','e','a','d','-','n','e','x','t',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' '}; static unsigned char W2[24]={'n'}; static unsigned char W3[8]={0,0,0,0,0,0}; static unsigned char W4[16]={'0','4','/','0','6','/','0','6','0','6',':', '3','0',':','2','5'}; static struct sdtf F[1]; /* tabulky souboru */ static void _(int,char**); #include "c:\mxc\mxcobr.h" static struct OBR SAC1[]={{0xC0,128,32767,0,0,(char*)&SAC1[15 ]}, {0x00,0,0,0,0,0,0x00,0x18,0x00,0x78,0x00,0x00,0,1,0}, {0x20,0,0,0,0,0,0x24,0x00,0x00,0x07,0x00,0x00,0,5,1}, {0x00,0,0,4,0,"mode:",0x44,0x00,0x00,0x07,0x00,0x00,0,1,10}, {0x28,0,0,0,0,0,0x84,0x00,0x80,0x70,0x04,0x00,0,1,20}, {0x28,0,1,19,0,0,0x84,0x00,0x00,0x07,0x08,0x00,0,1,25}, {0x28,0,21,1,0,0,0x84,0x00,0x00,0x07,0x08,0x00,0,1,50}, {0x20,0,23,0,0,0,0x14,0x00,0x00,0x07,0x00,0x00,0,5,1}, {0x00,0,23,3,0,"key:",0x44,0x00,0x00,0x07,0x00,0x00,0,1,10}, {0x89,5,23,4,0,"\4\377 ZZZZZ",0x84,0x00,0x80,0x70,0x04,0x00,0,1,20}, {0x20,0,28,0,0,0,0x14,0x00,0x00,0x07,0x00,0x00,0,2,1}, {0x00,0,28,3,0,"dat:",0x44,0x00,0x00,0x07,0x00,0x00,0,1,10}, {0x28,0,28,24,0,0,0x84,0x00,0x80,0x70,0x04,0x00,0,1,20}, {0x20,0,53,0,0,0,0x24,0x00,0x00,0x07,0x00,0x00,0,19,1}, {0x00,0,53,58,0,"f-ind, s-tart, n-ext, b-ack, w-rite, u-pdate, d-elete, e-nd",0x44,0x00,0x00,0x07,0x00,0x00,0,1,10}, {0xC2,0,0,0,0,(char*)&SAC1[0]}}; struct J0 {char j[20];}; struct J1 {char j[25];}; static struct OBR SAC2[]={{0xC0,0,32767,0,0,(char*)&SAC2[2 ]}, {0x28,0,0,0,0,0,0x00,0x00,0x00,0x07,0x00,0x00,0,0,0}, {0xC2,0,0,0,0,(char*)&SAC2[0]}}; struct J2 {char j[5];}; static struct OBR SAC3[]={{0xC0,0,32767,0,0,(char*)&SAC3[2 ]}, {0x28,0,0,1,0,0,0x00,0x00,0x00,0x07,0x00,0x00,0,0,0}, {0xC2,0,0,0,0,(char*)&SAC3[0]}}; static char m16[16]={32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32}; struct J3 {char j[15];}; struct J4 {char j[3];}; struct J5 {char j[17];}; static short _f0004( int, char** ); struct J6 {char j[16];}; struct J7 {char j[11];}; struct J8 {char j[9];}; struct J9 {char j[13];}; struct J10 {char j[7];}; struct J11 {char j[14];}; struct J12 {char j[6];}; #pragma warn -par static short _f0003(int argc, char **argv); #define PK(x) if(pk[x]) lojo(ps[x]) static jmp_buf ps[4]; static short pk[4]; unsigned char icbdisac=0, icbbarvy = 0x07; #define STOPRUN if (icbdisac&0x80) {textattr(7); clrscr();} extern void clrscr(void),textattr(int); static unsigned char *X,*Y,*Z,*Z1; /* pomocne ukazatele */ static long l0,l1,l2,l3; static double d0,d1,d2,d3; static unsigned char P[81]; /* pracovni pole pro vsechny */ static void _(int,char**); ANONYMUS() {exprog++; _(0,(char **)0L); return 0;} unsigned int _stklen = 6 * 1024; struct sicxh icxh; /**/int main(int argc, char **argv) {icbhe(); _(argc,argv); return 0;} #include "D:\CeW\cobol\p\mx_d3.t" #pragma warn -par static void _(int argc, char **argv) /* toto je preklad PROCEDURE */ { /* konec zdroje .d */ ------------------------------------------------------- 2nd include C (.t) #define MXPE(x,y) return y #pragma warn -par static short _f0004( int argc, char **argv ) { /* 0071 if (READ-NEXT) or (READ-BACK) and FST-2 = "10" */ /* IF */ if (((*(W+40) == '\x6e')) || ((*(W+40) == '\x62')) && /* 0072 move "end of file !!!" to TXT else */ *(short*)(W) == *(short*)"\x31\x30") { /* 1 */ /* MOVE */ *(struct J2*)(W+16+15)=*(struct J2*)m16; *(struct J3*)(W+16+0) = *(struct J3*)"end of file !!!"; /* ELSE */ } /* 1 */ else { /* 1 */ /* 0073 if (FIND-REC) and FST-2 = "23" */ /* IF */ if (((*(W+40) == '\x66')) && /* 0074 move " " to DAT-IDX */ *(short*)(W) == *(short*)"\x32\x33") { /* 2 */ /* MOVE */ /* 0075 move "key not found !!!" to TXT else */ memset(F[0].r01+5+1, ' ', 24); *(F[0].r01+5+0) = ' '; /* MOVE */ *(struct J4*)(W+16+17)=*(struct J4*)m16; *(struct J5*)(W+16+0) = *(struct J5*)"key not found !!!"; /* ELSE */ } /* 2 */ else { /* 2 */ /* 0076 if (WRITE-REC) and FST-2 = "10" */ /* IF */ if (((*(W+40) == '\x77')) && /* 0077 move "duplicate key !!!" to TXT else */ *(short*)(W) == *(short*)"\x31\x30") { /* 3 */ /* MOVE */ *(struct J4*)(W+16+17)=*(struct J4*)m16; *(struct J5*)(W+16+0) = *(struct J5*)"duplicate key !!!"; /* ELSE */ } /* 3 */ else { /* 3 */ /* 0078 if (UPDATE-REC) and FST-2 = "10" */ /* IF */ if (((*(W+40) == '\x75')) && /* 0079 move "00" to FST-2. */ *(short*)(W) == *(short*)"\x31\x30") { /* 4 */ /* MOVE */ *(short*)(W+0) = *(short*)"00"; /* . */ } /* 4 */ } /* 3 */ } /* 2 */ } /* 1 */ /* 0080 * */ /* 0081 WORK-DET. */ return 0; } #pragma warn -par static short _f0003( int argc, char **argv ) { /* 0082 if (FIND-REC) */ /* IF */ if (((/* 0083 move "find" to TXT */ *(W+40) == '\x66'))) { /* 1 */ /* MOVE */ /* 0084 read IDX else */ *(struct J6*)(W+16+4)=*(struct J6*)m16; *(long*)(W+16+0) = *(long*)"find"; /* READ */ icbrxf(&F[0],(char *)1L,0); /* ELSE */ } /* 1 */ else { /* 1 */ /* 0085 if (START-READ) */ /* IF */ if (((/* 0086 move "start" to TXT */ *(W+40) == '\x73'))) { /* 2 */ /* MOVE */ /* 0087 start IDX key = KEY-IDX */ *(struct J3*)(W+16+5)=*(struct J3*)m16; *(struct J2*)(W+16+0) = *(struct J2*)"start"; /* START */ /* 0088 move "n" to FCT */ memset(P,0,53); memcpy(P,F[0].r01,5); icbsxf(&F[0],P); if ( F[0].dflag & KMAX ) { /* 3 */ } /* 3 */ /* MOVE */ /* 0089 read IDX next else */ *(W+40+0) = 'n'; /* READ */ if ( !(F[0].dflag & SETL) ) icbsxf(&F[0],NULL); if ( !(F[0].dflag & KMAX) ) icbrxf(&F[0],NULL,1); /* ELSE */ } /* 2 */ else { /* 2 */ /* 0090 if (READ-NEXT) */ /* IF */ if (((/* 0091 move "read-next" to TXT */ *(W+40) == '\x6e'))) { /* 3 */ /* MOVE */ /* 0092 read IDX next else */ *(struct J7*)(W+16+9)=*(struct J7*)m16; *(struct J8*)(W+16+0) = *(struct J8*)"read-next"; /* READ */ if ( !(F[0].dflag & SETL) ) icbsxf(&F[0],NULL); if ( !(F[0].dflag & KMAX) ) icbrxf(&F[0],NULL,1); /* ELSE */ } /* 3 */ else { /* 3 */ /* 0093 if (READ-BACK) */ /* IF */ if (((/* 0094 move "read-back" to TXT */ *(W+40) == '\x62'))) { /* 4 */ /* MOVE */ /* 0095 read IDX previous else */ *(struct J7*)(W+16+9)=*(struct J7*)m16; *(struct J8*)(W+16+0) = *(struct J8*)"read-back"; /* READ */ if ( !(F[0].dflag & SETL) ) icbsxf(&F[0],NULL); if ( !(F[0].dflag & KMAX) ) icbrxf(&F[0],NULL,-1); /* ELSE */ } /* 4 */ else { /* 4 */ /* 0096 if (WRITE-REC) */ /* IF */ if (((/* 0097 move "write" to TXT */ *(W+40) == '\x77'))) { /* 5 */ /* MOVE */ /* 0098 write REC-IDX else */ *(struct J3*)(W+16+5)=*(struct J3*)m16; *(struct J2*)(W+16+0) = *(struct J2*)"write"; /* WRITE */ icbwxf(&F[0]); /* ELSE */ } /* 5 */ else { /* 5 */ /* 0099 if (UPDATE-REC) */ /* IF */ if (((/* 0100 move "rewrite" to TXT */ *(W+40) == '\x75'))) { /* 6 */ /* MOVE */ /* 0101 rewrite REC-IDX else */ *(struct J9*)(W+16+7)=*(struct J9*)m16; *(struct J10*)(W+16+0) = *(struct J10*)"rewrite"; /* REWRITE */ icbfupd(&F[0]); /* ELSE */ } /* 6 */ else { /* 6 */ /* 0102 if (DELETE-REC) */ /* IF */ if (((/* 0103 move "delete" to TXT */ *(W+40) == '\x64'))) { /* 7 */ /* MOVE */ /* 0104 delete IDX */ *(struct J11*)(W+16+6)=*(struct J11*)m16; *(struct J12*)(W+16+0) = *(struct J12*)"delete"; /* DELETE */ /* 0105 move "n" to FCT */ icbdxf(&F[0]); /* MOVE */ /* 0106 else */ *(W+40+0) = 'n'; /* ELSE */ } /* 7 */ else { /* 7 */ /* 0107 move "!!! unknown mode !!!" to TXT. */ /* MOVE */ *(struct J0*)(W+16+0) = *(struct J0*)"!!! unknown mode !!!"; /* . */ } /* 7 */ } /* 6 */ } /* 5 */ } /* 4 */ } /* 3 */ } /* 2 */ } /* 1 */ /* 0108 */ } -------------------------------------------------------------------------- MX COBOL - free compiler - (c) Vlastimil Cevela 2006 --------------------------------------------------------------------------